/**
 * 
 */
package ar.com.greensoft.neosystem.model.internacion;

import java.util.Date;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.Inheritance;
import javax.persistence.InheritanceType;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Null;
import javax.validation.constraints.Size;

import ar.com.greensoft.neosystem.model.BaseEntity;

/**
 * 
 * @author Jorge E. Villaverde
 * @since 22/06/2013
 * @version 1.0.0
 */
@Entity
@Table(name="aplicacion_remedio")
@Inheritance(strategy=InheritanceType.JOINED)
@NamedQueries({
	@NamedQuery(name=AplicacionRemedio.FIND_ALL_QUERY_NAME, 
		query="SELECT p FROM AplicacionRemedio p"),
	@NamedQuery(name=AplicacionRemedio.FIND_BY_INTERNACION_QUERY_NAME,
		query="SELECT p FROM AplicacionRemedio p WHERE p.internacion = :internacion"),
	@NamedQuery(name=AplicacionRemedio.FIND_BY_REMEDIO_QUERY_NAME,
		query="SELECT p FROM AplicacionRemedio p WHERE p.remedio = :remedio"),
	@NamedQuery(name=AplicacionRemedio.COUNT_QUERY_NAME,    
		query="SELECT COUNT(p) FROM AplicacionRemedio p")
})
public class AplicacionRemedio extends BaseEntity {

	/**
	 * 
	 */
	private static final long serialVersionUID = 7117037763165668942L;

	public static final String FIND_ALL_QUERY_NAME = "AplicacionRemedio.findAll";
	public static final String FIND_BY_INTERNACION_QUERY_NAME = "AplicacionRemedio.findByInternacion";
	public static final String FIND_BY_REMEDIO_QUERY_NAME = "AplicacionRemedio.findByRemedio";
	public static final String COUNT_QUERY_NAME = "AplicacionRemedio.count";
	
	
	@NotNull
	@ManyToOne(fetch=FetchType.LAZY, cascade=CascadeType.ALL)
	@JoinColumn(name="id_internacion")
	private Internacion internacion;
	
	@NotNull
	@ManyToOne(fetch=FetchType.LAZY, cascade=CascadeType.ALL)
	@JoinColumn(name="id_remedio")
	private Remedio remedio;
	
	/**
	 * Fecha de la aplicación del remedio
	 */
	@NotNull
	@Temporal(TemporalType.TIMESTAMP)
    @Column(name = "fecha_aplicacion")
	private Date fechaAplicacion;
	
	@Size(max=255)
	@Null
	@Column(name = "nota")
	private String nota;

	public Internacion getInternacion() {
		return internacion;
	}

	public void setInternacion(Internacion internacion) {
		this.internacion = internacion;
	}

	public Remedio getRemedio() {
		return remedio;
	}

	public void setRemedio(Remedio remedio) {
		this.remedio = remedio;
	}

	public Date getFechaAplicacion() {
		return fechaAplicacion;
	}

	public void setFechaAplicacion(Date fechaAplicacion) {
		this.fechaAplicacion = fechaAplicacion;
	}

	public String getNota() {
		return nota;
	}

	public void setNota(String nota) {
		this.nota = nota;
	}
	
}
